perm filename VIDEO.LES[UP,DOC] blob sn#002752 filedate 1972-10-06 generic text, type T, neo UTF8
12 June 1972		Video System Commands		by L. Earnest

The video switch has been up for a  few  weeks  now.    The  hardware
configuration   is   described   in   SAILON-69,   which   lives   in
VDS.LES[S,DOC].  Fred Wright did the system programming needed to use
switch.  He also changed some display keyboard commands.

KEYBOARD COMMAND CHANGES

The commands in which  you  used  to  type  "(CONTROL)<number>  [ESC]
<letter>" are now of the form "[ESC] <number> <letter>", as follows.

pause Nth line   [ESC] <N> E       line pause←∞      [ESC]  E
pause Nth glitch [ESC] <N> J	   glitch pause←∞    [ESC]  J
glitches/screen  [ESC] <N> G	   set lines/glitch  [ESC]  <N>  L
vert. position   [ESC] <N> Y

The  last  command now has a different interpretation:  "[ESC] <N> Y"
specifies a text line position at which your page printer will begin,
with 1 at the top of the screen and 40(DD) or 42(III) at the bottom.
A null argument resets to the standard position.

KEYBOARD SWITCH COMMANDS

Users of TV consoles have access to 32 Data Disc channels, numbered 0
to  37 octal, and 7 television channels, numbered 41 to 47.  They are
currently allocated as follows.
     0:37 DD channels   42 Sierra camera   45  Conference room TV
     40 null channel    43 Kintel camera   46  color synthesizer
     41 Cohu camera     44 cart receiver   47  video synthesizer
The null channel has the  interesting  property  that  it  is  always
utterly blank.

When  you  start  typing  something, the system automatically grabs a
Data Disc channel  for  you,  if  one  is  available,  and  marks  it
"private".   The  following  commands  may  be  used to look at other
channels and to permit others to look at your channel.   [If  I  show
you mine, will you show me yours?]

select channel:  [ESC] <chan> S      select line:   [BREAK] <line> S
add channel:     [ESC] <chan> A      add line:	    [BREAK] <line> A
delete channel:  [ESC] <chan> D	     delete line:   [BREAK] <line> D
hide channel:    [ESC]   H	     unhide channel:[BREAK]   H

"[ESC] <chan> S"  attempts  to  switch  your  console  to  the  given
channel.    This always works for channels 40 and above, but will not
work  for  DD channels that are private.  "[BREAK] <line> S" attempts
to  select  the  console channel for the given line number (i. e. the
TTY number, 1 through 127).   This facilitates showing  someone  else
what the machine did to you.

The "A" commands work in similar fashion to  add  a  channel  to  the
one(s) you are already looking at, subject to the privacy constraint.
It is possible to view simultaneously any number of DD  channels  and
one  synchronous TV channel.  Currently only the synthesizers and the
null channel are synchronous, but the cameras will be later.  If  you
select  or add an asynchronous TV channel (currently 41:45), then all
DD channels are blocked until you select  or  add  a  synchronous  TV
channel.  If this seems confusing to you, think how your monitor must
feel.

The "D" commands are simply the inverse of "A".   A  null  <chan>  or
<line>  in  an  "S", "A", or "D" command refers to your main channel.
Thus "[ESC] S" turns on just your page printer channel.

The "H" commands let you exhibit yourself,  then  hide  again.   Your
state  of  privacy  or exhibitionism persists as long as you keep the
channel, but drops out when "this console available" appears.

To get a summary of the above commands, say  "HELP  DISPLAY"  to  the
monitor, or "SPOOL KEY.LES[UP,DOC]".


MONITOR CALLS

The following UUOs have been added to permit  user  programs  to  get
extra DD channels and to switch things around.

DDCHAN	     CALLI 400067

	MOVE AC,[<channel request>]
	CALL AC,[SIXBIT/DDCHAN/]

This  UUO  is  used  to  get  and  release  DD  channels  and  to get
information. The channel request is interpreted as follows.

BITS 28,29   operation
	0 - release channel	2 - get status
	1 - get channel		3 - set status
A "get channel" will fail if the requested channel is unavailable.  A
"set status" will fail if the channel doesn't belong to you.    These
two  commands  skip  on  success;  otherwise, the next instruction is
executed.

BITS 30:35  channel number
Values 0 through 37 specify a particular  DD  channel.    In  a  "get
channel"  request,  the  value 77 specifies "any channel".  In a "get
status"  or "set status", 77 means your main channel.   In a "release
channel", 77 releases all channels assigned  to  the  job.   A  RESET
(CALLI  0)  does the same thing.  Other values for channel number are
undefined.

BIT 0	    privacy
A "1" in this position means no one else can look at this channel.

BIT 1	    write permission
A  "1"  in  this  position  means  that  other jobs can write on this
channel.

After execution of this UUO (except for a "release all channels" or a
"get any channel" failure), the AC contains the channel number in the
right  half, the privacy and write permission status in bits 0 and 1,
plus the following information.

BITS 10:17  channel use
A value of "0" in this field means the channel is free.  1 through 77
means  that it is an extra channel belonging to that job number.  100
through 177 means that it is the main channel for the TTY line  whose
number is 52 (octal) less than this.  200 through 377 are for special
channels, such as the one that says "this console available".

EXAMPLE:   To  request a private channel that only your job can write
on, do
	MOVE AC,[400000,,177]
	CALL AC,[SIXBIT/DDCHAN/]
	JRST LOSE
WIN:	...
If you get  to WIN, the channel number will be in the right half of AC
and the left half will have the sign bit on with your job number in
bits 10 through 17.


VDSMAP	     CALLI 400070

	MOVE AC,[<switch request>,,<map address>]
	CALL AC,[SIXBIT/VDSMAP/]

This UUO is used to select the channels that are displayed on a given
monitor.   Each monitor is controlled by a 36 bit map that  specifies
which channels are "on", as follows.

BITS 0:31    DD channels
A  1  in  bit  i  means  that  DD  channel i is connected to this
monitor.

BITS 33:35   TV channels
0 in this field selects the null channel; 1  through  7  selects  the
corresponding  TV  camera,  receiver,  or  synthesizer.   In terms of
keyboard commands, these are channels 41 through 47.

BIT 32	     asynchronous bit
"0" causes DD sync to be inserted, "1" blocks  DD  sync  and  all  DD
channels.   Whenever  bits  33:35 specify an asynchronous source, the
system automatically sets this bit to "1".

EXAMPLE:   A  map  containing "200000,,7" selects DD channel 1 and TV
channel 47.

The  system  keeps  2  maps  for  each  monitor  channel,  called the
permanent map and the temporary map.  The keyboard commands mentioned
above change the permanent map and the switch is set to the permanent
map whenever a RESET is performed, as when a program exits.

The right half of the AC used in this UUO points to a channel map, as
above, while the left half is interpreted as follows.

BITS 11:17  line number
"0" means "own".  Other lines associated with TV monitors (26 through
117) may be switched only if they have no job logged in.

BIT 0	     temporary/permanent
0 means a temporary change, 1 means permanent.

BITS 6:8     operation
    0 - NOP. Never skips.  Useful for getting switch status.
    1 - Set map.  Skips if entirely successful (line is free or owned
	and there is no privacy problem).
    2 - Add specified channels.  Bits 0:31 of the new map are  "or"ed
	with the old map.  If bits 33:35 of the new map are  non-zero
	they replace the old value.  Skips on complete success.
    3 - Delete channels (inverse of 2).  If any of bits 33:35 in the
	new map is "1", this field is cleared to "0", which selects
	the null TV channel.  Fails only on a busy line number.  Skips
	on success.
    4 - Reset map.  In temporary mode (per bit 0), this resets the
	map to the permanent one.  In permanent  mode, this resets
	the map to the main channel alone.  Fails only on a busy
	line number.  Skips on success.
    5:7 - Undefined.

EXAMPLE 1:  To temporarily connect DD channel 21 and TV channel 47  to
your monitor.
	MOVE AC,[1000,,[1,,7]]
	CALL AC,[SIXBIT/VDSMAP/]
	JRST LOSE
WIN:	...

EXAMPLE 2:  To get the current channel map of line 37.
	MOVSI AC,37
	CALLI AC,400070
	...
The result appears in the AC.

If that  isn't  sufficiently  confusing,  consult  F.  Wright  or  L.
Earnest.